package ar.com.indra.dao.impl;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.springframework.jdbc.core.support.JdbcDaoSupport;

import ar.com.indra.beans.FormularioUsuarioDTO;
import ar.com.indra.dao.FormularioUsuarioDAO;


public class FormularioUsuarioDaoImpl extends JdbcDaoSupport implements FormularioUsuarioDAO{


	/**
	 * Lista de formularios por usuario(ya estan filtrados por las exclusiones).  
	 */	
	@Override
	public List<FormularioUsuarioDTO> findFormulariosByUsuario(int id_usuario,	int id_encuesta) {
		List<FormularioUsuarioDTO> listaDeFormulario= new ArrayList<FormularioUsuarioDTO>();
		
		System.out.println("Parametros");
		System.out.println("id_usuario: " + id_usuario + "  id_encuesta: "+id_encuesta);
		
		String sql = "select f.ID_FORMULARIO, f.ID_ENCUESTA ,f.NOMBRE_FORMULARIO ,  fu.ESTADO from SESC_FORMULARIOS_USUARIOS fu, " +
				"SESC_FORMULARIOS f where fu.ID_FORMULARIO=f.ID_FORMULARIO and f.ID_ENCUESTA = ? and fu.ID_USUARIO = ?";

		Object[] parameters =  new Object[] {new Integer( id_encuesta),new Integer( id_usuario)};
		List<Map> rows =  getJdbcTemplate().queryForList(sql,parameters);

		for (Map row : rows) {
			FormularioUsuarioDTO formularioUsuario = new FormularioUsuarioDTO();

			if(row.get("ID_FORMULARIO")!= null){
				formularioUsuario.setId_formulario(new Integer(row.get("ID_FORMULARIO").toString()));
			}else{
				formularioUsuario.setId_formulario(new Integer(0));			
			}

			if(row.get("ID_ENCUESTA")!= null){
				formularioUsuario.setId_encuesta(new Integer(row.get("ID_ENCUESTA").toString()));
			}else{
				formularioUsuario.setId_encuesta(new Integer(0));			
			}
			formularioUsuario.setNombre((String) row.get("NOMBRE_FORMULARIO"));			
			formularioUsuario.setEstado((String) row.get("ESTADO"));
			if (formularioUsuario.getEstado().equals("NO")) {
				formularioUsuario.setNo_lo_utilizo(true);				
			} else {
				formularioUsuario.setNo_lo_utilizo(false);
			}
			listaDeFormulario.add(formularioUsuario);
		}
		
		
		return listaDeFormulario;
	}
	
	public int updateEstado(FormularioUsuarioDTO f) {
		// falta implementar
		System.out.println("FormularioUsuarioDaoImpl.update(FormularioUsuarioDTO u): INICIO");		
		
		String sql = "update SESC_FORMULARIOS_USUARIOS f " +
					 "set f.ESTADO = ? " +
					 "where f.ID_FORMULARIO= ? and f.ID_USUARIO  = ? ";

		Object[] parameters =  new Object[] { f.getEstado(), f.getId_formulario(), f.getId_usuario() };
		
		int result = getJdbcTemplate().update(sql, parameters);
		
		System.out.println("FormularioUsuarioDaoImpl.update(FormularioUsuarioDTO u): FIN");
		
		return result;
	}

	public int validateEstadoFormularios(Integer id_usuario) {
		// falta implementar
		System.out.println("FormularioUsuarioDaoImpl.validateEstadoFormularios(Integer id_usuario): INICIO");		
		
		String sql = "select count(*) cantidad " +
					 "from SESC_FORMULARIOS_USUARIOS fu " +
					 "where ID_USUARIO= ?  and ESTADO not IN ('FI','NO')";

		Object[] parameters =  new Object[] { id_usuario };
		
		int result = getJdbcTemplate().queryForInt(sql, parameters);
		
		System.out.println("FormularioUsuarioDaoImpl.validateEstadoFormularios(Integer id_usuario): FIN");
		
		
		return result;
	}

}
